package com.ltkj.shop.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ltkj.common.core.utils.StringUtils;
import com.ltkj.common.core.utils.bean.BeanUtils;
import com.ltkj.common.security.utils.DictUtils;
import com.ltkj.shop.domain.ShopHotel;
import com.ltkj.system.api.domain.ShopHotelDTO;
import com.ltkj.system.api.domain.SysDictData;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.compress.utils.Lists;

import java.util.Date;
import java.util.List;

/**
 * 酒店商户对象 shop_hotel
 *
 * @author xupf
 * @date 2023-09-03
 */
@ApiModel(value = "酒店商户页面展示类")
@Data
public class ShopHotelVo extends ShopHotel
{
    private static final long serialVersionUID = 1L;

    /** 轮播图 */
    @ApiModelProperty(value = "轮播图")
    private List<ShopImgVo> imgDetails = Lists.newArrayList();

    /** 酒店类型 */
    @ApiModelProperty(value = "酒店类型")
    private String typeName;

    /** 酒店房间 */
    @ApiModelProperty(value = "酒店房间")
    private List<ShopHotelRoomVo> hotelRoomVos;

    /** 缩略图类型（移动端首页使用） */
    @ApiModelProperty(value = "缩略图类型")
    private String fileType = "0";

    /** 缩略图地址（移动端首页使用） */
    @ApiModelProperty(value = "缩略图地址")
    private String imgPath;

    /** 移动端首页使用 */
    @ApiModelProperty(value = "title")
    private String title;

    /** 移动端首页使用 -- 跟随首页综合推荐接口修改 */
    @ApiModelProperty(value = "tabType")
    private String tabType = "5";

    /** 酒店政策-入住时间 */
    @JsonFormat(pattern = "HH:mm")
    @ApiModelProperty("酒店政策-入住时间")
    private Date checkInTime;

    /** 酒店政策-离店时间 */
    @JsonFormat(pattern = "HH:mm")
    @ApiModelProperty("酒店政策-离店时间")
    private Date checkOutTime;

    public String getTitle() {
        return getName();
    }

    public String getImgPath() {
        return getImgAbbrev();
    }
    public String getTypeName() {
        if (StringUtils.isNotEmpty(getType())) {
            List<SysDictData> dictCache = DictUtils.getDictCache("shop_hotel_type");
            return dictCache.stream().filter(e -> e.getDictValue().equals(getType())).findFirst().get().getDictLabel();
        }
        return typeName;
    }


    public static ShopHotelDTO toDTO(ShopHotelVo vo) {
        ShopHotelDTO shopHotelDTO = new ShopHotelDTO();
        BeanUtils.copyBeanProp(shopHotelDTO, vo);
        return shopHotelDTO;
    }
}
